package org.jeecg.modules.bobo.common.util;

import org.apache.poi.ss.formula.functions.T;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * @program: server
 * @description: 序列化工具类
 * @author: 三千霜
 * @create: 2021-01-28 16:31
 */

public class SerializeUtils {
    /**
     * 序列化对象
     * @author 三千霜
     * @date 2021/1/28 17:02
     * @param: test
     * @Return void
     * @throws

     */
    public static <T> byte[] getSerialize(T t){
            byte[] std = new byte[0];
        try {
    /*关键步骤：将对象变成二进制数组。使用对象输出流将对象
   				 写入ByteArrayOutputStream里再使用toByteArry()变成byte数组
   				 然后存到数据库*/
            ByteArrayOutputStream byt=new ByteArrayOutputStream();
            ObjectOutputStream obj=new ObjectOutputStream(byt);
            obj.writeObject(t);
            std=byt.toByteArray();
        }catch (Exception e){
            e.printStackTrace();
        }
        return std;

    }
    public static <T> T getUnSerialize(T t,byte[] ob){
        try {
            //将取出的二进制数据反序列化成序列化的对象，依旧使用对象流处理
            ByteArrayInputStream byteInt=new ByteArrayInputStream(ob);
            ObjectInputStream objInt=new ObjectInputStream(byteInt);
            t=(T) objInt.readObject();
            return t;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
}
